package main

import "fmt"

// 结构体是值类型
type person struct {
	name, sex string
}

func f1(x person) {
	x.sex = "男"
}

func f2(x *person) {
	//(*x).sex = "男"
	x.sex = "男"	//写法等同于上面，语法糖，自动根据指针找对应变量
}


func main() {

	var p person
	p.name = "xxxx"
	p.sex = "女"
	fmt.Println(p) //{xxxx 女}
	// 在go语言中，函数调用永远是拷贝，函数里面修改对外层不影响
	// 如果一定要修改使用指针
	f1(p)  //{xxxx 女}
	fmt.Println(p)
	f2(&p)   // 传递内存地址
	fmt.Println(p) // {xxxx 男}

}
